1. Field of the Invention
This invention relates to systems for driving computer peripherals that have features which are not envisaged by the generic operating system for the computer, and it relates especially, though not exclusively, to the implementation of 3D sound capability via Universal Serial Bus (USB) audio hardware.
2. Description of the Related Art
The Microsoft Windows family of operating systems is currently widespread and dominant in the computer market and hence all audio-related peripheral devices, such as sound cards and loudspeakers, are built to comply with a suitable Windows interface. However there are certain features, such as 3D positioning of sounds and environmental effects, that are not specifically catered for by the system provider and for which there is thus no driver capability.
Windows provides well-defined interfaces between the operating system and drivers for envisaged devices; the interface in each case being defined by a Windows Driver Model (WDM). The WDM specification covers drivers for all envisaged devices and there are detailed sections of the specification that relate to a range of device classes, such as printers, graphics and audio devices. These more detailed sections specify the content and form of the information that must flow through the WDM interface in order to achieve the envisaged functionality of the respective device classes.
Unfortunately, there is no simple way of enabling the system to perform functionalities that have not been incorporated into the drivers by the provider of the operating system.
FIG. 1 of the accompanying drawings illustrates schematically the relationship between an operating system 1, a WDM audio driver 3 and a hardware device 5; the system 1 being linked to the driver 3 by means of a WDM interface 2 and the driver 3 being linked to the hardware 5 by means of an interface 4.
The WDM interface 2 dictates that all communication between the operating system 1 and the device driver 3 is conveyed as Input/Output Request Packets (IRPs); these being memory data structures of predefined format that are initialized with data pertaining to a required operation. IRPs can carry information both from and to the driver 3 as well as an instruction to perform a function and, for every required operation, the operating system creates one or more IRPs that are sent to the device driver. The device driver is then required to respond in a prescribed manner, according to the WDM specification.
If it is desired to employ, in such an environment, a hardware application for which the device driver is not configured, such as that required to achieve 3D sound capability, then the functionality of the device driver needs to be altered and/or augmented. However the two most direct methods available for putting such alteration and/or augmentation into effect both have significant drawbacks associated with them.
In order, for example, to modify the source code for the driver, one naturally needs to have access to the source code. That for Microsoft's USB audio driver is not available for alteration and, even if it were, there would be concerns about the alterations creating unexpected ramifications in other areas of the functionality.
If, on the other hand, one were to incorporate a WDM filter driver, allowing modifications to be made to the stream of IRPs flowing between the operating system and the driver, different problems could arise. In particular, because the IRP data structure is designed to implement generic communications between the operating system and the device driver of a generic device, the IRPs transmitted do not always map simply on to the complex operations being requested. Thus it is often impractical to augment the existing functionality of the base device in this way because there are insufficient features upon which to build.
The invention aims to provide a device driver system which can enable, without incurring the drawbacks referred to above, the implementation of functionalities not catered for by the provider of the operating system.